package com.YK.retryer.strategy.annotationwrapper.intervalwrapper.impl;

import com.YK.retryer.strategy.annotationwrapper.intervalwrapper.AbstractTimeIntervalWrapper;

/**
 * @author yuank
 * @version 1.0.0
 * @date 2025/2/28 15:16:19
 *
 * 假设：
 * 初始等待时间为 3秒
 * 最大重试次数为 3次
 * 时间单位为 秒
 *
 * 执行过程：
 * 第一次重试: 等待 3秒
 * 第二次重试: 等待 3秒
 * 第三次重试: 等待 3秒
 *
 */
public class FixedTimeIntervalRetry extends AbstractTimeIntervalWrapper {

    @Override
    public boolean retrySleepSuccess() {
        int attempt = 0;
        while (maxAttempts > attempt) {
            try {
                // 每次重试的时间间隔是固定的
                timeUnit.sleep(time);
                maxAttempts--;
                return true;
            } catch (InterruptedException e) {
                Thread.currentThread().interrupt();
                throw new RuntimeException("Retry interrupted", e);
            }
        }
        return false;
    }
}